ক্লোজার (Clojure) লিস্প (Lisp) পরিবারের একটি আধুনিক এবং ফাংশনাল ভাষা, যা জাভা ভার্চুয়াল মেশিন (JVM) এর জন্য তৈরি হয়েছে। ক্লোজার এবং লিস্পের মধ্যে সম্পর্ক গভীর এবং শক্তিশালী, কারণ ক্লোজার মূলত লিস্প থেকে প্রভাবিত হয়। যদিও ক্লোজার অনেক নতুন বৈশিষ্ট্য যুক্ত করেছে, তবে এটি লিস্পের মূল ধারণা এবং সিনট্যাক্সকে ধরে রেখেছে।
লিস্প (Lisp) প্রোগ্রামিং ভাষা পরিবারটি ১৯৫৮ সালে জন ম্যাকার্থি (John McCarthy) এবং তার সহকর্মীদের দ্বারা তৈরি হয়েছিল। এটি মূলত কৃত্রিম বুদ্ধিমত্তা (AI) গবেষণার জন্য ডিজাইন করা হয়েছিল এবং তখন থেকেই এটি AI এবং অন্যান্য গবেষণার ক্ষেত্রে ব্যাপকভাবে ব্যবহৃত হয়ে আসছে। লিস্পের উল্লেখযোগ্য বৈশিষ্ট্যগুলির মধ্যে রয়েছে:
লিস্পের বেশ কয়েকটি উপভাষা তৈরি হয়েছে, যেমন Common Lisp, Scheme, এবং ক্লোজার। ক্লোজারকে বিশেষভাবে লিস্প ভাষার আধুনিক সংস্করণ হিসেবে ধরা হয়।
ক্লোজার লিস্পের মতো সিম্বলিক এক্সপ্রেশন (S-Expressions) ব্যবহার করে। প্রতিটি প্রোগ্রাম স্টেটমেন্ট বা এক্সপ্রেশন একটি প্যারেনথেসিসে বেষ্টিত থাকে, যা কোডকে লিস্পের মতই সংক্ষিপ্ত এবং রিডেবল করে তোলে। উদাহরণস্বরূপ:
(defn যোগফল [a b]
(+ a b))
এই কোডটি একটি লিস্প-ধাঁচের সিনট্যাক্স ব্যবহার করে, যেখানে প্রতিটি এক্সপ্রেশন প্যারেনথেসিসে বেষ্টিত।
ক্লোজার লিস্পের মেটাপ্রোগ্রামিং ক্ষমতাগুলোর উত্তরাধিকার গ্রহণ করেছে। ক্লোজারে ম্যাক্রো আছে, যা কোডকে ম্যানিপুলেট করতে এবং পরিবর্তন করতে ব্যবহৃত হয়। মেটাপ্রোগ্রামিং ক্ষমতা কোডকে আরও সংক্ষিপ্ত এবং পুনরায় ব্যবহারযোগ্য করে তোলে, যা মূলত লিস্প ভাষার একটি শক্তিশালী বৈশিষ্ট্য।
ক্লোজারে লিস্পের মতো একটি শক্তিশালী REPL রয়েছে। REPL ব্যবহার করে কোডকে তাৎক্ষণিকভাবে চালানো এবং আউটপুট দেখা যায়, যা প্রোগ্রামিং অভিজ্ঞতাকে আরও ইন্টারেক্টিভ এবং দ্রুতগামী করে তোলে। লিস্পের REPL প্রোগ্রামারদের মধ্যে যেভাবে জনপ্রিয় ছিল, ক্লোজারের REPL একইভাবে ডেভেলপারদের মধ্যে জনপ্রিয়।
লিস্প এবং ক্লোজার উভয়ই ফাংশনাল প্রোগ্রামিংকে সমর্থন করে। যদিও লিস্পের বিভিন্ন উপভাষায় ইমিউটেবল ডেটা কাঠামো ছিল না, ক্লোজারে ইমিউটেবল ডেটা কাঠামো অন্তর্ভুক্ত করা হয়েছে, যা ফাংশনাল প্রোগ্রামিংয়ের ধারণাকে আরও শক্তিশালী করেছে।
লিস্প মূলত সিঙ্গল-থ্রেড প্রোগ্রামিংয়ের জন্য তৈরি হলেও, ক্লোজার মাল্টি-থ্রেডিং প্রোগ্রামিংয়ের জন্য কার্যকরী বৈশিষ্ট্য যেমন Software Transactional Memory (STM) এবং Agents এর মতো ধারণা যুক্ত করেছে। এটি লিস্পের ওপর একটি বড় ধরনের উন্নতি, যা কনকারেন্ট প্রোগ্রামিংকে ক্লোজারে আরও সহজ ও নিরাপদ করে তোলে।
ক্লোজার তার মূল ডিজাইন এবং সিনট্যাক্সে লিস্পের নীতিগুলো অনুসরণ করে। এটি লিস্পের বৈশিষ্ট্যগুলো যেমন S-Expressions, REPL এবং মেটাপ্রোগ্রামিং ক্ষমতাগুলো ধরে রেখেছে, যা এটিকে লিস্প ফ্যামিলির অংশ হিসেবে বিবেচনা করে।
ক্লোজার, লিস্পের সাথে সম্পর্কিত হলেও, কিছু আধুনিক বৈশিষ্ট্য যুক্ত করেছে যা এটি ফাংশনাল প্রোগ্রামিং ও মাল্টি-থ্রেডেড প্রোগ্রামিংয়ে ব্যবহারযোগ্য করে তুলেছে। এর মধ্যে রয়েছে:
যদিও ক্লোজার লিস্পের সাথে সম্পর্কিত, এর কিছু গুরুত্বপূর্ণ পার্থক্য রয়েছে যা এটি আধুনিক প্রোগ্রামিংয়ের উপযোগী করে তোলে:
ক্লোজার লিস্প ফ্যামিলির একটি অংশ এবং এটি লিস্পের শক্তিশালী ফাংশনাল ও মেটাপ্রোগ্রামিং বৈশিষ্ট্যগুলো উত্তরাধিকার সূত্রে পেয়েছে। তবে ক্লোজার লিস্প থেকে অনেক নতুন বৈশিষ্ট্য যুক্ত করেছে, যেমন ইমিউটেবল ডেটা কাঠামো, JVM ভিত্তিক ইন্টারঅপারেবিলিটি এবং কনকারেন্ট প্রোগ্রামিংয়ের জন্য আধুনিক টুলস।
এই কারণে, ক্লোজার একটি আধুনিক লিস্প ভাষা যা ডেভেলপারদের আধুনিক সমস্যাগুলোর সমাধানে লিস্পের মূল ধারণাগুলোকে আরও কার্যকরী করে তুলেছে।
common.read_more